package main
import (
	"fmt"
	"errors"
)
//defer + recover 机制处理错误
/* func main(){
	test()
	fmt.Println("上述除法已执行，正常继续操作")
}

func test(){
	//利用defer+recover来捕获错误：defer后加上匿名函数调用
	defer func() {
		//调用recover内置函数，可以捕获错误：
		err := recover()
		//如果没有错误，返回值为零值：nil
		if err!= nil{
			fmt.Println("错误已经捕获")
			fmt.Println("err：",err)
		}
	}()
	num1 := 10
	num2 := 0
	result := num1/num2
	fmt.Println(result)
}
 */

 //自定义错误：调用errors包下的New函数：函数返回error类型
func main(){
	err := test()
	if err!=nil{
		fmt.Println("自定义错误：",err)
		panic(err) //程序中断
	}
	fmt.Println("上述除法已执行，正常继续操作")
}

func test()(err error){
	num1 := 10
	num2 := 0
	if num2 == 0{
		//抛出自定义错误：
		return errors.New("除数不能为零")
	}else{ //除数不为零，正常执行
		result := num1/num2
		fmt.Println(result)
		//如果没有错误，返回零值
		return nil
	}

}